var base_url;
var seleccionados;
$(document).ready(function() {
    base_url=$('#base_url').html();
    console.log('INFO: ************** ASIENTOS CONTROLLER ****************');

    setDataFiltrosSinFecha(localStorage.origen, localStorage.destino);
    seleccionados=0;
    getAsientosAjax(localStorage.idProgramacion); //Trae los asientos para mostrar

    $('#form1_btn_atras').click(function() {
        history.go(-1);
    });

    $('#form1_btn_siguiente').click(function() {
        if (validateAsientosSeleccionados()) {
            getAsientosSeleccionados();
            callUrlFromJS('online/sus_datos');
        } else {
            mostrarMensajeTemporal('#mensajeControl1', 'Debes seleccionar al menos 1 asiento para continuar.', 5000);
        }
    });
});


function validateAsientosSeleccionados() {
    return $('div.seleccionado1').length+ $('div.seleccionado2').length>0? true: false;
}

function getAsientosAjax(idProgramacion){
    var method = WS_SERVER+'bus/asientos/idProgramacion/' +idProgramacion + '/format/json';
    //var method = WS_SERVER+'bus/asientos/idProgramacion/1/format/json';
    console.log("WS: "+method);

    $.ajax({
        type: 'get',
        url: method,
        dataType: 'json',
        data: '',
        cache: false,
        success: function(data){
            if (data==null){
                alert('Entro null getAsientosAjax. No hay información para su consulta.');
            } else {
                var dataTable1= populateAsientosTablePrimerPiso(data.asientos_1);
                $('#lista_asientos_primer_piso').html(dataTable1);
                var dataTable2= populateAsientosTableSegundoPiso(data.asientos_2);
                $('#lista_asientos_segundo_piso').html(dataTable2);

                rebindEvents();
            }
        },
        error: function(jqXHR, textStatus, errorThrown){
            console.log("ERROR: Ajax Request: "+textStatus+", "+errorThrown);
            console.log("ERROR_METHOD: getAsientosAjax");
            console.log("ERROR_WS: "+method);
            
            alert('Entro null getAsientosAjax. No hay información para su consulta.');
        }
    });
}

function getAsientosSeleccionados() {
    var total1= $('div.seleccionado1').length;
    var asientosPrimerPiso= new Array();
    var asientosPrimerPisoMostrar= new Array();
    localStorage.asientosPrimerPiso = '[]';
    localStorage.asientosPrimerPisoMostrar = '[]';
    $('div.seleccionado1').each(function(index) {
        asientosPrimerPiso[index]=$(this).data('idasientobd');
        asientosPrimerPisoMostrar[index]=$(this).data('idasiento');
        if (index==total1-1) {
            localStorage.asientosPrimerPiso = JSON.stringify(asientosPrimerPiso);
            localStorage.asientosPrimerPisoMostrar = JSON.stringify(asientosPrimerPisoMostrar);
        }
    });

    var total2= $('div.seleccionado2').length;
    var asientosSegundoPiso= new Array();
    var asientosSegundoPisoMostrar= new Array();
    localStorage.asientosSegundoPiso = '[]';
    localStorage.asientosSegundoPisoMostrar = '[]';
    $('div.seleccionado2').each(function(index) {
        asientosSegundoPiso[index]=$(this).data('idasientobd');
        asientosSegundoPisoMostrar[index]=$(this).data('idasiento');
        if (index==total2-1) {
            localStorage.asientosSegundoPiso = JSON.stringify(asientosSegundoPiso);
            localStorage.asientosSegundoPisoMostrar = JSON.stringify(asientosSegundoPisoMostrar);
        }
    });
}

function populateAsientosTablePrimerPiso(asientos) {
    var cad=createCabeceraTD(PRIMER_PISO);
    var cont= 1;
    var numRows=asientos.length;
    asientos.forEach(function(item) {
        if (numRows>0){
            if (cont%3==1){//inicio de cada fila
                cad+=TR;
            }
            cad+=createAsientoTD(item.numeroAsiento, item.estadoAsiento, item.idTipoAsiento, item.idAsiento); //id, estado, tipoAsiento
            if (cont==2 || cont==11 || cont==20) {
                cad+=createEspacioTD(TELEVISOR, item.idTipoAsiento);
            } else if (cont==5 || cont==8 || cont==14 || cont==17 || cont==23 ) {
                cad+=createEspacioTD(VACIO, item.idTipoAsiento);
                if (cont==23){
                    cad+=createEspacioTD(BANIO, item.idTipoAsiento);
                }
            }
            if (cont%3==0) { // fin de cada fila
                cad+=TR2;
            }
        }

        cont++;
    });
    return cad;
}

function populateAsientosTableSegundoPiso(asientos) {
    var cad=createCabeceraTD(SEGUNDO_PISO);
    var cont= 24;
    var numRows=asientos.length;
    asientos.forEach(function(item) {
        if (numRows>0){
            if (cont%3==0){//inicio de cada fila
                cad+=TR;
            }
            cad+=createAsientoTD(item.numeroAsiento, item.estadoAsiento, item.idTipoAsiento, item.idAsiento); //id, estado, tipoAsiento
            if (cont==25 || cont==31 || cont==37) {
                cad+=createEspacioTD(TELEVISOR, item.idTipoAsiento);
                if (cont==37){
                    cad+=createEspacioTD(BANIO, item.idTipoAsiento);
                }
            } else if (cont==28 || cont==34) {
                cad+=createEspacioTD(VACIO, item.idTipoAsiento);
            }
            if (cont%3==2) { // fin de cada fila
                cad+=TR2;
            }
        }

        cont++;
    });
    return cad;
}

function rebindEvents() {
    $('td div').click(function() {
        var clase = $(this).attr('class');
        if (clase=='libre1') {
            if (seleccionados>=MAX_CANTIDAD_SELECCIONADOS) {
                mostrarMensajeTemporal('#mensajeControl1', 'Solo puede seleccionar 8 asientos como máximo por vez, debido a medidas de seguridad.', 5000);
            } else {
                switchClassAsiento(this,'libre1', 'seleccionado1');
                seleccionados+=1;
            }
        } else if (clase=='seleccionado1') {
            switchClassAsiento(this, 'seleccionado1','libre1');
            seleccionados-=1;
        } else if (clase=='libre2') {
            if (seleccionados>=MAX_CANTIDAD_SELECCIONADOS) {
                mostrarMensajeTemporal('#mensajeControl1', 'Solo puede seleccionar 8 asientos como máximo por vez, debido a medidas de seguridad.', 5000);
            } else {
                switchClassAsiento(this,'libre2', 'seleccionado2');
                seleccionados+=1;
            }
        } else if (clase=='seleccionado2') {
            switchClassAsiento(this, 'seleccionado2','libre2');
            seleccionados-=1;
        }
        $('#seleccionados').text(seleccionados);
    });
}